# text_cleaner.py
import re
import html


class TextCleaner:
    # 常见错别字映射
    MISSPELL_MAP = {
        '帐号': '账号', '登陆': '登录', '定单': '订单',
        '快弟': '快递', '退钱': '退款', '在吗': ''
    }

    # 常见口语词汇映射
    ORAL_WORDS = [
        '我要', '我想', '我的', '一下', '这个', '那个',
        '能不能', '可不可以', '请问', '你好', '谢谢',
        '就是说', '那个啥', '呃', '啊', '呀', '啦', '呢',
        '哈喽', '喂', '哦', '嗯', '嘛', '吧','怎么样', '如何', '能不能', '可不可以', '帮我看下', '帮我看一下',
        '帮忙', '麻烦', '劳驾', '请问一下', '就是', '就是说', '那个',
        '哈喽', 'hi', 'hello', 'hey', 'ok', '好的'
    ]

    @staticmethod
    def clean(text):
        """清洗文本 - 增强版，移除口语化表达"""
        if not text:
            return ""

        # 1. 移除HTML标签
        cleaned = html.unescape(text)  # 转换HTML实体
        cleaned = re.sub(r'<[^>]+>', '', cleaned)  # 移除HTML标签

        # 2. 移除特殊符号（保留中文、英文、数字和必要标点）
        cleaned = re.sub(r'[^\w\u4e00-\u9fff\s.,?!，。？！]', '', cleaned)

        # 3. 移除多余空格、制表符、换行符
        cleaned = re.sub(r'\s+', ' ', cleaned).strip()

        # 4. 移除口语化词汇
        # 构建正则表达式匹配模式，确保匹配整个词（前后有边界）
        oral_pattern = r'\b(' + '|'.join(TextCleaner.ORAL_WORDS) + r')\b'
        cleaned = re.sub(oral_pattern, '', cleaned)

        # 5. 简单纠错
        for wrong, correct in TextCleaner.MISSPELL_MAP.items():
            cleaned = cleaned.replace(wrong, correct)

        # 6. 再次移除多余空格（可能因删除口语词汇产生）
        cleaned = re.sub(r'\s+', ' ', cleaned).strip()

        return cleaned